#!/usr/bin/env python3
"""
日期时间 MCP 服务器
提供获取当前日期和时间的功能
"""

import asyncio
import sys
from datetime import datetime
from typing import Any, Sequence

from mcp.server import FastMCP
from mcp.types import Tool, TextContent
from pydantic import AnyUrl

# 创建 FastMCP 服务器实例
mcp = FastMCP("date-time-server")


@mcp.tool()
def get_current_datetime() -> str:
    """
    获取当前的日期和时间

    Returns:
        str: 格式化的当前日期和时间字符串
    """
    now = datetime.now()
    return now.strftime("%Y年%m月%d日 %H:%M:%S")


@mcp.tool()
def get_current_date() -> str:
    """
    获取当前日期

    Returns:
        str: 格式化的当前日期字符串
    """
    today = datetime.now().date()
    return today.strftime("%Y年%m月%d日")


@mcp.tool()
def get_current_time() -> str:
    """
    获取当前时间

    Returns:
        str: 格式化的当前时间字符串
    """
    now = datetime.now().time()
    return now.strftime("%H:%M:%S")


@mcp.tool()
def get_timestamp() -> float:
    """
    获取当前时间戳

    Returns:
        float: Unix 时间戳
    """
    return datetime.now().timestamp()


@mcp.tool()
def get_iso_datetime() -> str:
    """
    获取 ISO 格式的日期时间

    Returns:
        str: ISO 格式的日期时间字符串
    """
    return datetime.now().isoformat()


@mcp.tool()
def get_weekday() -> str:
    """
    获取当前是星期几

    Returns:
        str: 星期几的中文名称
    """
    weekdays = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
    today = datetime.now()
    return weekdays[today.weekday()]


@mcp.tool()
def format_datetime(format_string: str = "%Y-%m-%d %H:%M:%S") -> str:
    """
    使用自定义格式字符串格式化当前日期时间

    Args:
        format_string: Python datetime 格式字符串 (默认: "%Y-%m-%d %H:%M:%S")

    Returns:
        str: 格式化的日期时间字符串
    """
    now = datetime.now()
    try:
        return now.strftime(format_string)
    except ValueError as e:
        return f"格式错误: {str(e)}"


if __name__ == "__main__":
    # 运行服务器
    mcp.run()
